package com.itheima.service.impl;

import com.itheima.anno.Log;
import com.itheima.exception.BusinessException;
import com.itheima.mapper.DeptMapper;
import com.itheima.mapper.EmpMapper;
import com.itheima.pojo.Dept;
import com.itheima.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;

@Service//标识为service实现类 --交给springIOC管理
public class DeptServiceImpl implements DeptService {

    @Autowired //从IOC中获取 mapper实现类对象
    private DeptMapper deptMapper;

    @Autowired
    private EmpMapper empMapper;

    @Override
    public List<Dept> queryDeptList() {
        return deptMapper.findAll();
    }

    @Override
    @Log
    public void delete(Integer id) {
        // 根据部门id 查询员工数量
      Integer deptId  = id;
      Long count = empMapper.countByDeptId(deptId);
        // 如果该部门下员工数量>0  不能删除 --错误的操作--设置为异常--自己定义一个异常类--实现抛出异常
      if(count>0){
          throw new BusinessException("该部门下有员工，不能删除");
      }
        //如果部门下员工数量=0 说明可以删除
        //找mapper 将id传递给mapper
        deptMapper.delete(id);//爆红 alt+enter
    }

    @Override
    @Log
    public void add(Dept dept) {
        //补充创建时间 修改时间
        dept.setCreateTime(LocalDateTime.now());
        dept.setUpdateTime(LocalDateTime.now());
        deptMapper.add(dept);
    }
    // 根据id查询 返回部门对象
    @Override
    public Dept getById(Integer id) {
        return deptMapper.getById(id);
    }
   // 完成修改
   @Log
    @Override
    public void update(Dept dept) {
        // dept只有id name 没有更新时间 所以要补全
        dept.setUpdateTime(LocalDateTime.now());
        //将 dept数据 传递给mapper
        deptMapper.update(dept);
    }
}